Method for scheduling videoconferences

ABSTRACT

This invention provides an automated method for connecting a videoconference through a telecommunication system comprising telecommunication devices, endpoints, and routing segments. A computer videoconferencing (VC) scheduling system reserves communications facilities and time slots by:  
     providing a database in a telecommunication Operations Center that includes:  
     † a network model of the real-world telecommunication system  
     † endpoint operating indicia  
     † telecommunications device operating indicia  
     † telecommunications network operating indicia  
     establishing an adjacency matrix based on route segments between each endpoint and telecommunication device  
     assigning efficiency values to each route segment in the matrix  
     calculating the most efficient routing for the videoconference automatically using a graph algorithm  
     nominating a primary device for interconnecting the telecommunication devices and endpoints  
     verifying operability of the telecommunication system&#39;s network model through resource counting  
     recording verified routes in the Operations Center database  
     Least Cost Routing (LCR) and Resource Counting techniques automatically create conferencing schedules that are economically routed and supported within the network&#39;s capabilities. These tasks are usually too complex and error-prone for efficient human management.

[0001] This invention relates to the field of telecommunications andvideoconferencing. In particular, it relates to methods and software forscheduling telecommunication conferencing having audio and videopresentation.

BACKGROUND OF THE INVENTION

[0002] Modern communications has evolved a wide variety of devices andtechnologies, used for linking both public and private telecommunicationnetworks capable of communicating between various endpoint stations,such as videoconferencing (VC) rooms and desktop computers, forreal-time visual communication and collaboration. Since the endpointstations may be located in diverse places and served by a variety ofdifferent networks and telecom devices, linking these endpoints in asingle real-time multimedia conferencing event can be very complex,especially in geographically dispersed commercial, educational, orgovernmental facilities.

[0003] Videoconferencing is a form of real-time communication acrosslong distances with video and audio contact that may also includegraphics and data exchange. Digital video transmission systems typicallycomprise camera, codec (coder-decoder), network access equipment,network facilities, and audio components. Various technologiesestablished by the International Telecommunication Unionstandards-setting body (“ITU-T”) may be used in constructing avideoconference over ISDN (H.320), IP (H.323), and ATM (H.321) networks.The communications equipment and channels linking the multiple VC roomsare operatively connected through these telecom modules and/or networks.The physical links may include conventional telephone lines, wirelesstransmitters, fiber optic systems, satellites, etc. Within the network,VC technology uses several commercially available telecom devices tobridge and switch together multiple endpoints into a singlevideoconference. A Multipoint Control Unit (MCU) is such a device thatallows more than three individual videoconference endpoint units toconnect together to form a multiparty videoconference session. The MCUdevice uses fast switching techniques to patch the presenter's orspeaker's input to the output ports representing the other participants.A router or switch is a device that connects segments of the networktogether to allow a continuous path for the video stream to reach allparticipant endpoints in the videoconference.

[0004] Because of the variety of networks and subsystems encountered invideoconferencing, the differences in standards and protocols, and thelimited resource capacity of network devices and segment routes; thecomplexity of creating a successful videoconference using the mostefficient routing through human management usually results in a loworder of success. An Automated Scheduling System using specializedalgorithms and modeling techniques allows for a computer system toaccurately schedule and route videoconferences with the highest order ofsuccess.

SUMMARY OF THE INVENTION

[0005] The present invention provides a computer-implemented techniquefor scheduling and conducting videoconferencing in a complextelecommunications environment by providing a novel method forconnecting a videoconference through a telecommunication systemcomprising a plurality of telecommunication devices and a plurality ofendpoint stations. The system provides a database in a telecommunicationOperations Center facility including at least an initial configurationfor a network model of the telecommunication system. The initialscheduling steps involve entering endpoint indicia (e.g. -H.323 alias,IP address, dial string, User ID, bandwidth, etc.), andtelecommunications device operating indicia into the database.Information is also entered about the operating and cost parameters ofthe route segments (often called pipes) between the endpoint and telecomdevices.

[0006] Automatic allocation of telecom routing is affected byestablishing an adjacency matrix with nodes based on route segmentsbetween each operatively connected endpoint station andtelecommunication device; assigning efficiency values to each routesegment in the matrix; and calculating the most efficient routing forthe videoconference by employing an allocation graph algorithm. Thisnovel process can provide for nominating a primary telecom device forinterconnecting the system via selected route segments. Nominating aprimary device is followed by verifying operability of the network modelof the telecommunication system through conference event counting forcapacity allocation and automatic conference call launching through anautomated device control system. With the successful scheduling androute allocation steps recorded into the database at the OperationsCenter facility, the VC event can be initiated automatically overreserved facilities at the elected time.

BRIEF DESCRIPTION OF THE DRAWINGS

[0007]FIG. 1 is a schematic diagram depicting a telecommunicationssystem for videoconferencing.

[0008]FIG. 2 is flow chart illustrating an allocation algorithmaccording to the present invention.

[0009]FIG. 3 is a diagram depicting the resource counting algorithm.

[0010]FIG. 4 is a diagram depicting a multi-zone network model.

DETAILED DESCRIPTION

[0011] EXAMPLE 1

Automated Scheduling and Least Cost Routing

[0012] Example 1 demonstrates how a programmed computer with interactivesoftware provides a preferred computational method for connecting avideoconference through a telecommunication system comprising multipletelecommunication devices and endpoint stations. The successive stepsare:

[0013] 1) providing a database in a telecommunication host facilityincluding an initial configuration of a network model for thetelecommunication system;

[0014] 2) entering endpoint-operating indicia (e.g.-address, equipmentspecs, etc.) at the host facility database;

[0015] 3) entering telecommunications device operating indicia (e.g.-MCUidentification, bandwidth, etc.) at the host facility database;

[0016] 4) establishing an adjacency matrix based on route segmentsbetween each operatively connected endpoint station andtelecommunication device;

[0017] 5) optionally assigning efficiency values to each route segment(hop) in the matrix, provided there exists unequal value;

[0018] 6) automatically calculating the most efficient routing for thevideoconference by employing a Floyd-type graph algorithm;

[0019]7) nominating a primary device for interconnecting the system;

[0020] 8) verifying operability of a network model of thetelecommunication system; and

[0021] 9) recording verified routing in the host facility database.

[0022] Example 1 uses VC Wizard™ software (supplied by Magicsoft Corp.,Chantilly, Va., USA).

[0023] When the VC System schedules a videoconference, the program posesand answers several questions, including:

[0024] Are the desired rooms and persons available?

[0025] Are the desired rooms compatible?

[0026] What device can host this conference?

[0027] What is the best way to connect rooms to the host device?

[0028] Example 1 explains the algorithm the VC System uses to answerthese questions. The result is a successfully scheduled videoconferenceusing the most efficient routes between endpoints and devices.

Terminology

[0029] Several terms have specialized meanings in the context ofExample 1. Refer to Table 1 for definitions of these terms. Relatedterms are grouped together for comparison. TABLE 1 Terminology TermDefinition Device Logical construct in the network model that is not anendpoint and handles videoconferencing traffic, such as a switch,network cloud, or bridge. Bridge Subcategory of devices. A device thatcombines multiple inputs so that three or more parties can participatein a videoconference. Also called an MCU. MCU Multipoint Control Unit.Subcategory of devices. A device that combines multiple inputs so thatthree or more parties can participate in a videoconference. SwitchSubcategory of devices capable of routing traffic and hosting a limitedvariety of conferences. Pipe Connection between two rooms or devices.Pipes have types, such as ISDN and IP. Endpoint The combination ofhardware and software required to view and participate in avideoconference. The endpoint handles encoding, decoding, andcommunications with the bridge and other endpoints. Room Logicalconstruct in the network model that represents an endpoint. Person Inthe VC system, someone associated with a videoconference, either as aparticipant or technical contact. Resource A person, room, or devicerequested for a videoconference. VC Videoconferencing System (i.e.- VCWizard) System

Prerequisites

[0030] To execute the allocation algorithm, the system data suppliedincludes specific information about the conference, which the userenters at the time of scheduling; and details about thevideoconferencing network, which is configured as a network model whenthe VC System is installed.

Data Entered at Time of Scheduling

[0031] A typical VC system requires the following minimum information:TABLE 2 User-supplied data required for the allocation algorithm. FieldData Source Conference ID Automatically assigned by the VC System. Usedas a unique identifier to tag and retrieve information associated withthis conference. Start Date Required field. Entered by user. Start TimeRequired field. Entered by user. Duration Required field. Entered byuser in days, hours, and minutes. Reservation Type Required field.Selected by user. Persons in Entered by user. A person can be aparticipant Conference or technical support contact. Room In ConferenceEntered by user. A room is equivalent to a video endpoint. PrimaryDevice Only if user selects a device. By default, this field is blankand is populated at the end of the algorithm.

[0032] Based on this information, the program determines and allocatesthe most efficient route between the endpoints and devices involved inthe videoconference.

The Network Model

[0033] When the VC System is first installed, a user configures thenetwork model. This model is a virtual representation of the user'sreal-world videoconferencing network and includes:

[0034] all endpoints and devices in the network

[0035] capacity limitations for all devices

[0036] all connections, or pipes, in the network

[0037] types and capabilities for all pipes

[0038]FIG. 1 shows the network model used in Example 1. A significantportion (steps 5 and 6 below) of the algorithm focuses on rendering thismodel in a way that allows the program to determine how endpoints anddevices connect.

[0039] The network comprises two separate videoconferencing hubs,Location 1 and Location 2. Each room is a videoconferencing endpoint. Inthis model, all rooms link to the network with dial-up connections tonetwork cloud devices. Devices 1 and 2 represent MCUs connected to thenetwork by ISDN or Internet. The cloud devices also connect to eachother by a public switched ISDN network or the Internet.

[0040] When a videoconference includes rooms from both locations, the VCSystem software determines the most efficient way to host the conferencebased on least-cost routing. This kind of routing becomes very importantwhen linking videoconferencing networks in different parts of thecountry or around the world.

[0041] For example, assume Rooms 1, 2, and 3 participate in aconference. In this case, it is much more efficient to host theconference on Device 1 than on Device 2. Hosting on Device 1 requirestraffic from one room to travel across Pipe 3 to the other location, buthosting on Device 2 requires traffic from two rooms to travel acrossPipe 3 to the other location.

Process Overview

[0042] This section provides an overview of the steps required todetermine and allocate the most efficient route between endpoints:

[0043] 1. Retrieve information from the VC System database.

[0044] 2. Check resource availability.

[0045] 3. Check room compatibility.

[0046] 4. Check all devices as:

[0047] candidates for bridging device

[0048] candidates for switching device

[0049] 5. Generate an adjacency matrix with nodes representing telecomdevices and endpoints.

[0050] 6. Determine the most efficient route between all endpoints anddevices.

[0051] 7. Nominate a bridging device.

[0052] 8. Generate the actual route from each endpoint to the bridgingdevice.

[0053] 9. Allocate the actual route from each endpoint to the bridgingdevice.

[0054] 10. Store allocated resources in the database.

[0055]FIG. 2 represents these steps graphically as a flowchart.

How Reservation Type Affects the Algorithm

[0056] The type of reservation the user selects determines which ofthese steps are executed. Table 3 shows the relationship betweenreservation type and the algorithm's execution. TABLE 3 Steps executedfor each reservation type. Steps Reservation Type Executed FactorsChecked in These Steps Room Reservation 1-2, 10 Resource availabilityfor date and time Room Compatibility 1-3, 10 Resource availability fordate and time Compatibility of video parameters Network 1-10 Resourceavailability for date and time Reservation Network Control Compatibilityof video parameters Availability of network resources (channels,bandwidth, etc.)

[0057] For the purposes of this algorithm, the program treats NetworkReservation and Network Control the same. The difference between thesereservation types becomes important only when VC Wizard launches theconference automatically.

[0058] Step 1: Retrieve Information from the Database

[0059] Based on the conference ID (see Table 2), the program generatesthe following single-dimension arrays: TABLE 4 Arrays generated atbeginning of algorithm execution. Array Name Information in Array SitesProperties of all rooms included in the conference, including eachroom's hub connections. Persons Properties of all persons included inthe conference.

[0060] The program generates these arrays to perform steps 2-10.

[0061] Step 2: Check Resource Availability

[0062] The program determines whether each room and person included inthe conference is available at the specified date and time, based on theSites and Persons arrays in Table 4. Availability is constrained by:

[0063] time of day

[0064] The user may specify times of day when a room or person cannot bescheduled for a conference. For example, a person may not be availablebefore 7:00 A.M.

[0065] day of week

[0066] The user may specify days of the week when a room or personcannot be scheduled for a conference. For example, a person may not beavailable on Saturdays and Sundays.

[0067] holidays

[0068] The user may specify holidays when a room or person cannot bescheduled for a conference. For example, the room may not be availableon federal holidays.

[0069] other conferences

[0070] A room or person is considered available only if not scheduledfor another conference at the same date and time.

[0071] If all selected rooms and persons are available at the desireddate and time, the conference passes to step:

[0072] 10, if the conference is a Room Reservation,

[0073] 3, if the conference is Room Compatibility, Network Reservation,or Network Control

[0074] Otherwise, the system returns an error informing the user thatone or more rooms or persons are not available at the requested date andtime.

[0075] Step 3: Check Room Compatibility

[0076] The program determines whether each room included in theconference is compatible with the conference parameters, based on theSites array in Table 4. The room compatibility check is based on thecapabilities shown in Table 5. TABLE 5 Capabilities included in roomcompatibility check. Capability Description Speed Transmission speed, inkilobytes per second. Audio Format Audio encoding standards. VideoFormat Video encoding standards. Frame Rate Transmission speed, inframes per second. Protocol Videoconferencing standards and protocols.User-defined A custom field used to match rooms with similarcapabilities characteristics. Example: A user-defined capability called“Clearance Level” with possible values of classified, secret, and topsecret.

[0077] If all selected rooms are compatible with the conferenceparameters for each of these capabilities, the conference passes tostep:

[0078] 10 if the conference is Room Compatibility

[0079] 4 if the conference is Network Reservation or Network Control.

[0080] Otherwise, the system returns an error informing the user thatone or more capabilities are not compatible for the selected rooms.

[0081] Step 4: Check all Devices as Bridges or Switches

[0082] The program generates a single-dimension array of devices. Thisarray contains all devices in the network model. If the conference hasalready been scheduled and the user is editing it, then the Device arraycontains additional information for those devices currently allocated inthe conference.

[0083] Then, the program checks each device as a potential bridge orswitch for this conference.

[0084] For the purposes of illustration, assume that the conference mustinclude Rooms 1, 2, and 3. The user has not selected a primary device,so the program must test each device in the network as a bridge orswitch.

[0085] Check MCU (Bridge) Device Compatibility

[0086] Bridge device compatibility includes tests for devicecompatibility with the conference parameters and resource availabilityon the device.

[0087] Compatibility with Conference Parameters

[0088] A bridging device:

[0089] is compatible with the conference parameters

[0090] can potentially host the conference

[0091] acts as a terminus and does not pass traffic on to another device

[0092] has sufficient capacity to host the conference

[0093] The program tests each device in the array as a potentialbridging device. Based on information in the device driver, the programdetermines whether each device meets the criteria for the conferenceparameters.

[0094] Device Availability as Determined by Resource Counting

[0095] On those devices that match the conference parameters, thesoftware performs a further test to confirm device availability. Thistest prevents a device from being scheduled beyond its capacity at anygiven time. Refer to FIG. 3, which illustrates resource counting.

[0096]FIG. 3 shows that 11 conferences are already scheduled on theselected device on the proposed date. The software uses the resourcecounting algorithm to determine if the device's capacity allows theproposed conference to be scheduled, following these steps:

[0097] 1. Determine the first conference that overlaps the proposedconference's time. In FIG. 3, the first conference that overlaps theproposed conference's time is Conference 2.

[0098] 2. Create a new time period that is the intersection of theoverlapping conference's time and the proposed conference's time. LinesA and B mark this intersection.

[0099] 3. Generate a new list of conferences by including the remainingresources in use at anytime in the intersection time period. In FIG. 3,this list includes Conferences 2 and 3.

[0100] The size of this new list indicates the potential number ofresources in use at the exact same time as the first resource in theoriginal list. If the new list has only one resource in it, then thatnumber is one. The software continues to step 4.

[0101] If the new list has more than one resource, then the softwaremust recursively repeat steps 1-3 using the new time period and new listin place of the originals until a list size of one is reached. Afterreaching a list size of one, the software counts up the number ofrecursive calls to determine the number of resources in use at the exactsame time.

[0102] 4. Move on to each of the other resources in the list generatingnew time periods and new lists. For each resource, keep track of thenumber of other resources simultaneously in use and save the maximumnumber of recursive calls as the solution.

[0103] 5. At anytime, if the number of remaining resources in a list isless than the current maximum number of recursive calls (determined instep 4), stop processing the current list and go back to the previouslist of resources if there is one.

[0104] Checking the current list size against the current maximum countspeeds up the calculation by omitting needless computation.

[0105] 6. Confirm that the maximum count of resources in simultaneoususe is less than the device's capacity limits. In FIG. 3, the maximumcount is five. If the device can handle at least 6 conferences, then theproposed conference can be scheduled. Otherwise, this device cannot beused to host the proposed conference.

[0106] Results of Testing Devices as Possible Bridges

[0107] Those devices that pass both tests (compatibility andavailability) are added to a bridge array. Those that fail are tested asswitching devices. If no device meets the criteria for a bridge, theprogram returns an error to the user indicating that the conferencecannot be scheduled as requested.

[0108] Based on the sample network represented in FIG. 1, assume thatthe conference must include Rooms 1, 2, and 3. In this case, thefollowing devices meet the criteria for bridging devices:

[0109] Device 1

[0110] Device 2

[0111] Check Switching Device Compatibility

[0112] Switching device compatibility includes tests for devicecompatibility with the conference parameters and resource availabilityon the device.

[0113] Compatibility with Conference Parameters

[0114] A switching device:

[0115] is compatible with the conference parameters

[0116] is not a terminus

[0117] passes traffic on to another device or room

[0118] has sufficient capacity to handle conference traffic

[0119] The program tests each device that failed the bridgecompatibility test as a switching device. Based on information in theallocation device driver, the program determines whether each devicemeets the criteria for the conference parameters.

[0120] Next, the program tests each device for available capacity usingthe algorithm described in the section “Device Availability asDetermined by Resource Counting.”

[0121] Those that pass both tests (compatibility and availability) areadded to a switch array. Those that fail are excluded from thisconference.

[0122] Based on the sample network represented in FIG. 1, assume thatthe conference must include Rooms 1, 2, and 3. In this case, Cloud 1 andCloud 2 meet the criteria for switching devices.

[0123] Step 5: Generate an Adjacency Matrix

[0124] As a result of steps 1-4, the program has arrays of rooms,bridges, and switches for a particular conference, but no idea of howthese are connected. To derive the most efficient route linking therooms required for the conference, the program must first determine howthey are connected.

[0125] Floyd's Algorithm

[0126] The classic shortest-path algorithm finds the shortest path formthe start device to each of the other devices, using a method generallyattributed to R. W. Floyd.

[0127] Computation is made for each route to determine if it is part ofa new least costly path. for (MiddleNode = 0; MiddleNode < TableSize;MiddleNode++)  for (StartNode = 0; StartNode < TableSize; StartNode++)  if (Table[StartNode][MiddleNode].LowestCost > 0)    for (EndNode = 0;EndNode < TableSize; EndNode++)     if (StartNode != EndNode &&    Table[MiddleNode][EndNode].LowestCost > 0)      { NewCost =Table[StartNode][MiddleNode].LowestCost +      Table[MiddleNode][EndNode].LowestCost;       if(Table[StartNode][EndNode].LowestCost ==0 ||       Table[StartNode][EndNode].LowestCost > NewCost)        {        Table[StartNode][EndNode].LowestCost = NewCost;        Table[StartNode][EndNode].From =        Table[MiddleNode][EndNode].From;        }      }

[0128] How the Algorithm Determines Adjacency

[0129] To determine whether two endpoints or devices are adjacent, theprogram checks the Device and Site arrays for connections, or pipes,between each pair of starting and termination points in the network. Ifthe starting and termination point have a common pipe name, then theprogram treats these points as adjacent. For example, Cloud 1 and Device1 both include Pipe 2 in their lists of connections. Therefore, theprogram understands that these devices are adjacent. However, Room 1 andDevice 2 do not include a common pipe name in their lists ofconnections, so these rooms are not adjacent.

[0130] The program creates an adjacency matrix to represent theconnections in the network model. The matrix also stores the startingpoint for the most recent hop. At step 5, the starting point of the mostrecent hop is determined by simply referring to the row heading.However, as the algorithm continues, the starting point for the mostrecent hop cannot be determined from the matrix itself. Table 6 shows anadjacency matrix for the example conference including Rooms 1, 2, and 3.The matrix lists all rooms and devices that may be included in theconference. Rooms are always listed first in the matrix. A matrix entryof 0 corresponds to the absence of the indicated route. TABLE 6Adjacency matrix. R1 R2 R3 D1 C1 D2 C2 R1 0 0 0 1, R1 0 0 R2 0 0 0 1, R20 0 R3 0 0 0 0 0 1, R3 D1 0 0 0 1, D1 0 0 C1 1, C1 1, C1 0 1, C1 0 1, C1D2 0 0 0 0 0 1, D2 C2 0 0 1, C2 0 1, C2 1, C2

[0131] The row headings are possible starting points for a connection.The column headings are possible termination points for a connection.Each cell contains the number of hops required to connect these points,followed by the starting point of the last hop in the connection.

[0132] Based on this matrix, the program knows that Room 1 is notconnected to anything else except Cloud 1. This information limits thepossible routes for a conference including Room 1.

[0133] On the other hand, Cloud 1 is attached to Rooms 1 and 2, Device1, and Cloud 2. Therefore, Cloud 1 can provide intermediate connectionsbetween multiple rooms and devices.

[0134] Step 6: Determine the Most Efficient Route Between all Endpointsand Devices

[0135] In the network model in FIG. 1, each connection has acost/efficiency value of 1. However, users can assign costs/efficiencyvalues to connections when configuring the network model. When valuesgreater than 1 are used, the cost of connecting endpoints increases.However, the principles used to calculate the cost remain the same.

[0136] Using the adjacency matrix in Table 6, the program determines thenumber of hops required to connect each non-adjacent endpoint anddevice. Based on this data, the program determines the cheapest routebetween each device and endpoint.

[0137] To determine the most efficient (i.e. —cheapest) route, theprogram applies Floyd's algorithm (ref: Robert Sedgewick, Algorithms inC++ (Reading, Mass.: Addison-Wesley Publishing Company, 1992), 476-478.)as follows:

[0138] Test each possible midpoint with every combination of start andendpoints.

[0139] Check that the start point and end point are not equal.

[0140] Check that the midpoint is not equal to the start point orendpoint in the test.

[0141] Confirm whether the current number of hops is more efficient thanthe number already in the matrix and:

[0142] replace the matrix's value with the current calculated value ifthe matrix value is 0

[0143] replace the matrix's value with the current calculated value ifthe matrix value is greater than the calculated value

[0144] discard the calculated value if the matrix's value is less thanthe calculated value

[0145] For example, Table 7 shows the processing for the combination ofRoom 1 as a midpoint and Room 2 as a starting point. The table confirmswhat the network model already illustrates: Room 1 is not “between”anything and cannot be used as a midpoint between two other rooms ordevices. TABLE 7 Testing most efficient route with R1 as midpoint and R2as starting point. Start R2 R2 R2 R2 R2 R2 R2 Middle R1 R1 R1 R1 R1 R1R1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - Invalid - 0 0 0 0 0 middlestart cannot be cannot be equal to equal to end end

[0146] Table 8 shows how the matrix looks after the program has testedR1, R2, R3, D1, and C1 as possible midpoints. Values added as a resultof these steps are shown in underlined text. TABLE 8 Adjacency matrixafter partial processing for number of hops. R1 R2 R3 D1 C1 D2 C2 R1 2,C1 0 2, C1 1, R1 0 2, C1 R2 2, C1 0 2, C1 1, R2 0 2, C1 R3 0 0 0 0 0 1,R3 D1 2, C1 2, C1 0 1, D1 0 2, C1 C1 1, C1 1, C1 0 1, C1 0 1, C1 D2 0 00 0 0 1, D2 C2 2, C1 2, C1 1, C2 2, C1 1, C2 1, C2

[0147] The row headings are possible starting points for a connection.The column headings are possible termination points for a connection.Each cell contains the number of hops required to connect these points,followed by the starting point of the last hop in the connection.

[0148] For example, the cell at the intersection of D1 and R2 representsthe connection between Device 1 and Room 2. The value in this cellindicates that this connection requires two hops, and the second hopbegins at C1, or Cloud 1. Therefore, the program determines that Device1 and Room 2 can be connected in two hops by way of Cloud 1.

[0149] Once the remaining possibilities have been tested (B2 and C2),the adjacency matrix (Table 9) shows the cost of connection between eachpair of endpoints in the network. TABLE 9 Adjacency matrix afterapplying Floyd's algorithm. R1 R2 R3 D1 C1 D2 C2 R1 2, C1 3, C2 2, C1 1,R1 3, C2 2, C1 R2 2, C1 3, C2 2, C1 1, R2 3, C2 2, C1 R3 3, C1 3, C1 3,C1 2, C2 2, C2 1, R3 D1 2, C1 2, C1 3, C2 1, D1 3, C1 2, C1 C1 1, C1 1,C1 2, C2 1, C1 2, C2 1, C1 D2 3, C1 3, C1 2, C2 3, C1 2, C2 1, D2 C2 2,C1 2, C1 1, C2 2, C1 1, C2 1, C2

[0150] Step 7: Nominate a Bridging Device

[0151] At this stage, the program has determined: 1) the cost/efficiencyfor connection between every possible room and device and 2) whichdevices can host the conference. Based on this combination of data, theprogram must select the device that can host the conference mostefficiently.

[0152] Device 1 and Device 2 meet the criteria of a bridging device, sothe program compares the costs of holding a conference hosted by each.TABLE 10 Cost of hosting conference, by device. Rooms in Cost ofConnection to Conference Device 1 Device 2 Room 1 2 3 Room 2 2 3 Room 33 2 Total Cost 7 8

[0153] The conference can be hosted more cheaply on Device 1, for arelative cost of 7, than on Device 2 for a cost of 8. Thus, the programnominates Device 1 as the primary device for this videoconference. Ifthe cost of hosting the conference on each device is equal, the programchooses whichever device is first in the bridge array, which is thefirst device created in the network model. If the user specifies aprimary device when creating the conference, the program skips step 7and continues to step 8.

[0154] Step 8: Generate the Actual Route from each Endpoint to theBridging Device

[0155] The algorithm performs steps 8 and 9 for each room in theconference, and then repeats these steps for all subsequent rooms. Thissequence avoids allocating a connection or switch beyond its capacity.

[0156] After selecting Device 1 to host this conference, the programdetermines the actual route from each room to Device 1. The programbegins with the following information:

[0157] R1 to D1 is 2, with C1 as the starting point of the last hop

[0158] R2 to D1 is 2, with C1 as the starting point of the last hop

[0159] R3 to D1 is 3, with C1 as the starting point of the last hop

[0160] The integer indicates the number of hops between start andtermination points. The ID indicates the start point of the most recenthop. Therefore, the program can determine these routes:

[0161] R1 to C1 to D1

[0162] R2 to C1 to D1

[0163] In both of these cases, there are only two hops, and the secondhop begins with Cloud 1.

[0164] Determining Routes for Connections with two or more Hops

[0165] Now the program must resolve the route from R3 to D1, based on aroute with three hops and C1 as the starting point of the last hop.

[0166] R3 to x to C1 to D1, where x represents one or more intermediatepoints between R3 and C1

[0167] Based on the matrix in Table 9, the program can determine theroute between R3 and C1, which is R3 to C2 to C1. Therefore, the missingintermediate point (x) in the route from R3 to D1 is C2, which yieldsthis route for R3 to D1:

[0168] R3 to C2 to C1 to D1

[0169] Step 9: Allocate the Actual Routes from each Endpoint to theBridging Device

[0170] Based on the route determined, the program allocates resourcesalong the entire route to create a continuous path from the startingpoint to the ending point. For each hop in a route, the program reservesresources on the starting point, connection (pipe), and terminationpoint.

[0171] Then, the program confirms that the entire connection meets allrequirements for the conference (speed, bandwidth, etc.) and generatesdial strings, if needed.

[0172] After executing confirmation steps for the first room, theprogram repeats them for each subsequent room.

[0173] In the example used above, the actual routes are:

[0174] R1 to C1 to D1

[0175] R2 to C1 to D1

[0176] R3 to C2 to C1 to D1

[0177] as shown on the network model. The diagram confirms that theprogram succeeded in allocating the most efficient route from eachendpoint to the host device.

[0178] Because resources are reserved after each cycle, the program mayreach a point where the most efficient route is unavailable. Forexample, the number of connections for a switch may be exceeded, causingthe most efficient route to fail. In this case, the algorithm sets thevalue for this connection to 0 in the adjacency matrix (Table 9) andrepeats steps 6 through 9 for this room and device pair.

[0179] Step 10: Store Allocated Resources in the Database

[0180] The algorithm saves information to the database to allocate theresources required for this conference. The type of resources reserveddepends upon the reservation type the user selects (see Table 11). TABLE11 Information saved to database, by reservation type. Reservation TypeResources Reserved Room Reservation Rooms Room Compatibility PersonsNetwork Reservation Rooms Network Control Persons Devices, includingphone numbers and dial strings required to activate them Ports Channels

[0181] In addition, the algorithm changes the status of the conferenceto Scheduled. This status:

[0182] indicates that the persons, rooms, devices, ports, and channelsassociated with the conference are reserved for the conference'sscheduled time

[0183] prevents these resources from being booked for another conferenceduring the same conference's scheduled time

Adjacency Matrix Used in Example 1

[0184] This section shows how the algorithm uses Floyd's algorithm tocalculate the most efficient routes between each endpoint and device.

[0185] The adjacency matrix resulting from step 6 is reproduced here foreasy reference: R1 R2 R3 D1 C1 D2 C2 R1 0 0 0 1, R1 0 0 R2 0 0 0 1, R2 00 R3 0 0 0 0 0 1, R3 D1 0 0 0 1, D1 0 0 C1 1, C1 1, C1 0 1, C1 0 1, C1D2 0 0 0 0 0 1, D2 C2 0 0 1, C2 0 1, C2 1, C2

[0186] R1 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle R1 R1 R1 R1 R1R1 R1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - Invalid - Invalid -Invalid - Invalid - Invalid - Invalid - start start start start startstart start cannot be cannot be cannot be cannot be cannot be cannot becannot be equal to equal to equal to equal to equal to equal to equal tomiddle middle middle middle middle middle middle Start R2 R2 R2 R2 R2 R2R2 Middle R1 R1 R1 R1 R1 R1 R1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid -Invalid - 0 0 0 0 0 middle start cannot be cannot be equal to equal toend end Start R3 R3 R3 R3 R3 R3 R3 Middle R1 R1 R1 R1 R1 R1 R1 End R1 R2R3 D1 C1 D2 C2 Result Invalid - 0 Invalid - 0 0 0 0 middle start cannotbe cannot be equal to equal to end end Start D1 D1 D1 D1 D1 D1 D1 MiddleR1 R1 R1 R1 R1 R1 R1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 0 0Invalid - 0 0 0 middle start cannot be cannot be equal to equal to endend Start C1 C1 C1 C1 C1 C1 C1 Middle R1 R1 R1 R1 R1 R1 R1 End R1 R2 R3D1 C1 D2 C2 Result Invalid - 0 0 0 Invalid - 0 0 middle start cannot becannot be equal to equal to end end Start D2 D2 D2 D2 D2 D2 D2 Middle R1R1 R1 R1 R1 R1 R1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 0 0 0 0Invalid - 0 middle start cannot be cannot be equal to equal to end endStart C2 C2 C2 C2 C2 C2 C2 Middle R1 R1 R1 R1 R1 R1 R1 End R1 R2 R3 D1C1 D2 C2 Result Invalid - 0 0 0 0 0 Invalid - middle start cannot becannot be equal to equal to end end

[0187] At the end of this stage, the most efficient matrix looks likethis: R1 R2 R3 D1 C1 D2 C2 R1 0 0 0 1, R1 0 0 R2 0 0 0 1, R2 0 0 R3 0 00 0 0 1, R3 D1 0 0 0 1, D1 0 0 C1 1, C1 1, C1 0 1, C1 0 1, C1 D2 0 0 0 00 1, D2 C2 0 0 1, C2 0 1, C2 1, C2

[0188] There are no changes, showing that RI does not make a goodmiddle-point.

[0189] R2 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle R2 R2 R2 R2 R2R2 R2 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - Invalid - 0 0 0 0 0start middle cannot be cannot be equal to equal to end end Start R2 R2R2 R2 R2 R2 R2 Middle R2 R2 R2 R2 R2 R2 R2 End R1 R2 R3 D1 C1 D2 C2Result Invalid - Invalid - Invalid - Invalid - Invalid - Invalid -Invalid - start start start start start start start cannot cannot cannotcannot cannot cannot cannot be equal be equal be equal be equal be equalbe equal be equal to to to to to to to middle middle middle middlemiddle middle middle Start R3 R3 R3 R3 R3 R3 R3 Middle R2 R2 R2 R2 R2 R2R2 End R1 R2 R3 D1 C1 D2 C2 Result 0 Invalid - Invalid - 0 0 0 0 startstart cannot be cannot be equal to equal to middle end Start D1 D1 D1 D1D1 D1 D1 Middle R2 R2 R2 R2 R2 R2 R2 End R1 R2 R3 D1 C1 D2 C2 Result 0Invalid - 0 Invalid - 0 0 0 middle start cannot be cannot be equal toequal to end end Start C1 C1 C1 C1 C1 C1 C1 Middle R2 R2 R2 R2 R2 R2 R2End R1 R2 R3 D1 C1 D2 C2 Result 0 Invalid - 0 0 Invalid - 0 0 middlestart cannot be cannot be equal to equal to end end Start D2 D2 D2 D2 D2D2 D2 Middle R2 R2 R2 R2 R2 R2 R2 End R1 R2 R3 D1 C1 D2 C2 Result 0Invalid - 0 0 0 Invalid - 0 middle start cannot be cannot be equal toequal to end end Start C2 C2 C2 C2 C2 C2 C2 Middle R2 R2 R2 R2 R2 R2 R2End R1 R2 R3 D1 C1 D2 C2 Result 0 Invalid - 0 0 0 0 Invalid - middlestart cannot be cannot be equal to equal to end end

[0190] At the end of this stage, the most efficient matrix looks likethis: R1 R2 R3 D1 C1 D2 C2 R1 0 0 0 1, R1 0 0 R2 0 0 0 1, R2 0 0 R3 0 00 0 0 1, R3 D1 0 0 0 1, D1 0 0 C1 1, C1 1, C1 0 1, C1 0 1, C1 D2 0 0 0 00 1, D2 C2 0 0 1, C2 0 1, C2 1, C2

[0191] There are no changes, showing that R2 does not make a goodmiddle-point.

[0192] R3 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle R3 R3 R3 R3 R3R3 R3 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 0 Invalid - 0 0 0 0start middle cannot be cannot be equal to equal to end end Start R2 R2R2 R2 R2 R2 R2 Middle R3 R3 R3 R3 R3 R3 R3 End R1 R2 R3 D1 C1 D2 C2Result 0 Invalid - Invalid - 0 0 0 0 start middle cannot be cannot beequal to equal to end end Start R3 R3 R3 R3 R3 R3 R3 Middle R3 R3 R3 R3R3 R3 R3 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - Invalid - Invalid -Invalid - Invalid - Invalid - Invalid - start start start start startstart start cannot be cannot be cannot be cannot be cannot be cannot becannot be equal to equal to equal to equal to equal to equal to equal tomiddle middle middle middle middle middle middle Start D1 D1 D1 D1 D1 D1D1 Middle R3 R3 R3 R3 R3 R3 R3 End R1 R2 R3 D1 C1 D2 C2 Result 0 0Invalid - Invalid - 0 0 0 middle start cannot be cannot be equal toequal to end end Start C1 C1 C1 C1 C1 C1 C1 Middle R3 R3 R3 R3 R3 R3 R3End R1 R2 R3 D1 C1 D2 C2 Result 0 0 Invalid - 0 Invalid - 0 0 middlestart cannot be cannot be equal to equal to end end Start D2 D2 D2 D2 D2D2 D2 Middle R3 R3 R3 R3 R3 R3 R3 End R1 R2 R3 D1 C1 D2 C2 Result 0 0Invalid - 0 0 Invalid - 0 middle start cannot be cannot be equal toequal to end end Start C2 C2 C2 C2 C2 C2 C2 Middle R3 R3 R3 R3 R3 R3 R3End R1 R2 R3 D1 C1 D2 C2 Result 0 0 Invalid - 0 0 0 Invalid - middlestart cannot be cannot be equal to equal to end end

[0193] At the end of this stage, the most efficient matrix looks likethis: R1 R2 R3 D1 C1 D2 C2 R1 0 0 0 1, R1 0 0 R2 0 0 0 1, R2 0 0 R3 0 00 0 0 1, R3 D1 0 0 0 1, D1 0 0 C1 1, C1 1, C1 0 1, C1 0 1, C1 D2 0 0 0 00 1, D2 C2 0 0 1, C2 0 1, C2 1, C2

[0194] There are no changes, showing that R3 does not make a goodmiddle-point.

[0195] D1 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle D1 D1 D1 D1 D1D1 D1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 0 0 Invalid - 0 0 0start middle cannot be cannot be equal to equal to end end Start R2 R2R2 R2 R2 R2 R2 Middle D1 D1 D1 D1 D1 D1 D1 End R1 R2 R3 D1 C1 D2 C2Result 0 Invalid - 0 Invalid - 0 0 0 start middle cannot be cannot beequal to equal to end end Start R3 R3 R3 R3 R3 R3 R3 Middle D1 D1 D1 D1D1 D1 D1 End R1 R2 R3 D1 C1 D2 C2 Result 0 0 Invalid - Invalid - 0 0 0start middle cannot be cannot be equal to equal to end end Start D1 D1D1 D1 D1 D1 D1 Middle D1 D1 D1 D1 D1 D1 D1 End R1 R2 R3 D1 C1 D2 C2Result Invalid - Invalid - Invalid - Invalid - Invalid - Invalid -Invalid - start start start start start start start cannot be cannot becannot be cannot be cannot be cannot be cannot be equal to equal toequal to equal to equal to equal to equal to middle middle middle middlemiddle middle middle Start C1 C1 C1 C1 C1 C1 C1 Middle D1 D1 D1 D1 D1 D1D1 End R1 R2 R3 D1 C1 D2 C2 Result 0 0 0 Invalid - Invalid - 0 0 middlestart cannot be cannot be equal to equal to end end Start D2 D2 D2 D2 D2D2 D2 Middle D1 D1 D1 D1 D1 D1 D1 End R1 R2 R3 D1 C1 D2 C2 Result 0 0 0Invalid - 0 Invalid - 0 middle start cannot be cannot be equal to equalto end end Start C2 C2 C2 C2 C2 C2 C2 Middle D1 D1 D1 D1 D1 D1 D1 End R1R2 R3 D1 C1 D2 C2 Result 0 0 0 Invalid - 0 0 Invalid - middle startcannot be cannot be equal to equal to end end

[0196] At the end of this stage, the most efficient matrix looks likethis: R1 R2 R3 D1 C1 D2 C2 R1 0 0 0 1, R1 0 0 R2 0 0 0 1, R2 0 0 R3 0 00 0 0 1, R3 D1 0 0 0 1, D1 0 0 C1 1, C1 1, C1 0 1, C1 0 1, C1 D2 0 0 0 00 1, D2 C2 0 0 1, C2 0 1, C2 1, C2

[0197] There are no changes, showing that R3 does not make a goodmiddle-point.

[0198] C1 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle C1 C1 C1 C1 C1C1 C1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 2, C1 0 2, C1 Invalid -0 2, C1 start middle cannot be cannot be equal to equal to end end StartR2 R2 R2 R2 R2 R2 R2 Middle C1 C1 C1 C1 C1 C1 C1 End R1 R2 R3 D1 C1 D2C2 Result 2, C1 Invalid - 0 2, C1 Invalid - 0 2, C1 start middle cannotbe cannot be equal to equal to end end Start R3 R3 R3 R3 R3 R3 R3 MiddleC1 C1 C1 C1 C1 C1 C1 End R1 R2 R3 D1 C1 D2 C2 Result 0 0 Invalid - 0Invalid - 0 0 start middle cannot be cannot be equal to equal to end endStart D1 D1 D1 D1 D1 D1 D1 Middle C1 C1 C1 C1 C1 C1 C1 End R1 R2 R3 D1C1 D2 C2 Result 2, C1 2, C1 0 Invalid - Invalid- 0 2, C1 start startcannot be cannot be equal to equal to end middle Start C1 C1 C1 C1 C1 C1C1 Middle C1 C1 C1 C1 C1 C1 C1 End R1 R2 R3 D1 C1 D2 C2 Result Invalid -Invalid - Invalid - Invalid - Invalid - Invalid - Invalid - start startstart start start start start cannot be cannot be cannot be cannot becannot be cannot be cannot be equal to equal to equal to equal to equalto equal to equal to middle middle middle middle middle middle middleStart D2 D2 D2 D2 D2 D2 D2 Middle C1 C1 C1 C1 C1 C1 C1 End R1 R2 R3 D1C1 D2 C2 Result 0 0 0 0 Invalid - Invalid - 0 middle start cannot becannot be equal to equal to end end Start C2 C2 C2 C2 C2 C2 C2 Middle C1C1 C1 C1 C1 C1 C1 End R1 R2 R3 D1 C1 D2 C2 Result 2, C1 2, C2 0 2, C1Invalid - 0 Invalid - middle start cannot be cannot be equal to equal toend end

[0199] At the end of this stage, the most efficient matrix looks likethis: R1 R2 R3 D1 C1 D2 C2 R1 2, C1 0 2, C1 1, R1 0 2, C1 R2 2, C1 0 2,C1 1, R2 0 2, C1 R3 0 0 0 0 0 1, R3 D1 2, C1 2, C1 0 1, D1 0 2, C1 C1 1,C1 1, C1 0 1, C1 0 1, C1 D2 0 0 0 0 0 1, D2 C2 2, C1 2, C1 1, C2 2, C11, C2 1, C2

[0200] The items added as a result of this pass (testing C1 as middle)are in underlined text. These results indicate that C1 is a good middlepoint.

[0201] D2 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle D2 D2 D2 D2 D2D2 D2 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 0 0 0 0 Invalid - 0start middle cannot be cannot be equal to equal to end end Start R2 R2R2 R2 R2 R2 R2 Middle D2 D2 D2 D2 D2 D2 D2 End R1 R2 R3 D1 C1 D2 C2Result 0 Invalid - 0 0 0 Invalid - 0 start middle cannot be cannot beequal to equal to end end Start R3 R3 R3 R3 R3 R3 R3 Middle D2 D2 D2 D2D2 D2 D2 End R1 R2 R3 D1 C1 D2 C2 Result 0 0 Invalid - 0 0 Invalid - 0start middle cannot be cannot be equal to equal to end end Start D1 D1D1 D1 D1 D1 D1 Middle D2 D2 D2 D2 D2 D2 D2 End R1 R2 R3 D1 C1 D2 C2Result 0 0 0 Invalid - 0 Invalid - 0 start middle cannot be cannot beequal to equal to end end Start C1 C1 C1 C1 C1 C1 C1 Middle D2 D2 D2 D2D2 D2 D2 End R1 R2 R3 D1 C1 D2 C2 Result 0 0 0 0 Invalid - Invalid - 0start middle cannot be cannot be equal to equal to end end Start R1 R2R3 D1 C1 D2 C2 Middle D2 D2 D2 D2 D2 D2 D2 End D2 D2 D2 D2 D2 D2 D2Result Invalid - Invalid - Invalid - Invalid - Invalid - Invalid -Invalid - middle middle middle middle middle middle middle cannot becannot be cannot be cannot be cannot be cannot be cannot be equal toequal to equal to equal to equal to equal to equal to end end end endend end end Start C2 C2 C2 C2 C2 C2 C2 Middle D2 D2 D2 D2 D2 D2 D2 EndR1 R2 R3 D1 C1 D2 C2 Result 0 0 0 0 0 Invalid - Invalid - middle startcannot be cannot be equal to equal to end end

[0202] At the end of this stage, the leas-cost matrix looks like this:R1 R2 R3 D1 C1 D2 C2 R1 2, C1 0 2, C1 1, R1 0 2, C1 R2 2, C1 0 2, C1 1,R2 0 2, C1 R3 0 0 0 0 0 1, R3 D1 2, C1 2, C1 0 1, D1 0 2, C1 C1 1, C1 1,C1 0 1, C1 0 1, C1 D2 0 0 0 0 0 1, D2 C2 2, C1 2, C1 1, C2 2, C1 1, C21, C2

[0203] There are no changes, showing that D2 is not a good middle point.

[0204] C2 Middle Point Start R1 R1 R1 R1 R1 R1 R1 Middle C2 C2 C2 C2 C2C2 C2 End R1 R2 R3 D1 C1 D2 C2 Result Invalid - 4, C1 3, C2 4, C1 3, C23, C2 Invalid - Start Discard Discard Discard middle cannot be becausebecause because cannot be equal to this is this is this is equal to endgreater greater greater end than 2, than 2, than 1, C1 C1 R1 Start R2 R2R2 R2 R2 R2 R2 Middle C2 C2 C2 C2 C2 C2 C2 End R1 R2 R3 D1 C1 D2 C2Result 4, C1 Invalid - 3, C2 4, C1 3, C2 3, C2 Invalid - Discard startDiscard Discard middle because cannot be because because cannot be thisis equal to this is this is equal to greater end greater greater endthan 2, than 2, than 1, C1 C1 R2 Start R3 R3 R3 R3 R3 R3 R3 Middle C2 C2C2 C2 C2 C2 C2 End R1 R2 R3 D1 C1 D2 C2 Result 3, C1 3, C1 Invalid - 3,C1 2, C2 2, C2 Invalid - start middle cannot be cannot be equal to equalto end end Start D1 D1 D1 D1 D1 D1 D1 Middle C2 C2 C2 C2 C2 C2 C2 End R1R2 R3 D1 C1 D2 C2 Result 4, C1 4, C1 3, C2 Invalid - 4, C2 3, C2Invalid - Discard Discard start Discard middle because because cannot bebecause cannot be this is this is equal to this is equal to greatergreater end greater end than 2, than 2, than 1, C1 C1 D1 Start C1 C1 C1C1 C1 C1 C1 Middle C2 C2 C2 C2 C2 C2 C2 End R1 R2 R3 D1 C1 D2 C2 Result3, C1 3, C1 2, C2 3, C1 Invalid - 2, C2 Invalid - Discard DiscardDiscard start middle because because because cannot be cannot be this isthis is this is equal to equal to greater greater greater end end than2, than 2, than 1, C1 C1 C1 Start D2 D2 D2 D2 D2 D2 D2 Middle C2 C2 C2C2 C2 C2 C2 End R1 R2 R3 D1 C1 D2 C2 Result 3, C1 3, C1 2, C2 3, C1 2,C2 Invalid - Invalid - start middle cannot be cannot be equal to equalto end end Start R1 R2 R3 D1 C1 D2 C2 Middle C2 C2 C2 C2 C2 C2 C2 End C2C2 C2 C2 C2 C2 C2 Result Invalid - Invalid - Invalid - Invalid -Invalid - Invalid - Invalid - middle middle middle middle middle middlemiddle cannot be cannot be cannot be cannot be cannot be cannot becannot be equal to equal to equal to equal to equal to equal to equal toend end end end end end end

[0205] At the end of this stage, the most efficient matrix looks likethis: R1 R2 R3 D1 C1 D2 C2 R1 2, C1 3, C2 2, C1 1, R1 3, C2 2, C1 R2 2,C1 3, C2 2, C1 1, R2 3, C2 2, C1 R3 3, C1 3, C1 3, C1 2, C2 2, C2 1, R3D1 2, C1 2, C1 3, C2 1, D1 3, C1 2, C1 C1 1, C1 1, C1 2, C2 1, C1 2, C21, C1 D2 3, C1 3, C1 2, C2 3, C1 2, C2 1, D2 C2 2, C1 2, C1 1, C2 2, C11, C2 1, C2

[0206] The items added as a result of this pass (testing C2 as middle)are in underlined text. These results indicate that C2 is a good middlepoint. The matrix now contains the most efficient route between eachpair of points in the network.

Example 2: Least Cost Routing in a Multi-zone Network

[0207] Example 2 describes an application for an Automated SchedulingSystem (VC Wizard) to manage least cost routing and automated devicecontrol in a multi-zone, multi-campus network (shown in FIG. 4) thatuses H.323 IP Cisco 3511 and 3540 MCUs for multi-point conferencing.This multi-zone, multi-campus network is linked by three wide areanetwork (WAN) links, each with different H.323 zone call prefixes andWAN costs.

[0208] In the network shown in FIG. 4, calls are bridged on the localarea network (LAN) except when inter-zone calls are required. Forinter-zone calls, the Automated Scheduling System must:

[0209] use least cost routing to connect calls across the leastexpensive WAN link

[0210] add the correct dialing prefixes for inter-zone callsautomatically

[0211] bridge all connections automatically using automated devicecontrol

[0212] Based on the network in FIG. 4, assume a videoconference mustinclude Rooms 1, 3, 4, and 6. The software applies the least costrouting algorithm as follows.

Least Cost Routing for Multi-zone Conferences

[0213] After completing steps 1-3, the software builds the device array,which includes the MCUs from Zone 703 and Zone 301. At steps 5 and 6,the program generates an adjacency matrix and determines the list ofpossible routes. Based on the least expensive route, the softwarenominates a hosting device. In this case, based on the number ofendpoints in Zone 301, the software selects MCU 3540 to host the call.

[0214] At step 8 and 9, the software determines the actual routes fromeach endpoint to the host device. Rooms 3 and 4, which are in the samezone as MCU 3540, are routed locally via the LAN. The software routesRoom 1, in Zone 703, through WAN B.

[0215] When determining the route to connect Room 6 to the host device,the software must compare the cost of two possible routes, as shown inTable 12. TABLE 12 Cost of connecting to host device. Cost of ConnectionVia Zone 703 Direct Connection WAN A 1 Not used WAN B 1 Not used WAN CNot used 3 Total Cost 2 3

[0216] Based on the cost of connection, the software connects Room 6 tothe host device by way of WANs A and B. This route is less expensive dueto the higher cost of using WAN C.

Multi-zone Networks and Cascaded Conferences

[0217] Cascading a conference allows more participants to be included ina single conference. In a cascaded conference, two or more MCUs areconnected through WAN links. Some endpoints are hosted on one local MCUand others on a different local MCU. In this circumstance, the cost tobridge the conference locally is less than using the WAN link.

[0218] For example, assume the videoconference requires Rooms 1, 2, 3,and 4. In this case, the cost of using WAN links recommends againstusing either MCU as the conference host. Instead, the least cost routeconnects each room to the MCU in its local zone. Then, the softwarecascades the MCUs together, using the WAN link only once, to bridge theconference.

Automated Device Control

[0219] Once the device and endpoint information has been set upproperly, the automated schedule and control system is capable ofautomatically starting all the devices in the conference. In all cases,conference status, failures, and error messages may be displayed andrecorded for analysis.

[0220] The schedule and control system can automate and manage the MCUsand endpoints using telnet, SNMP, and XML commands. These commands allowthe automated schedule and control system to:

[0221] download all services previously created in the MCU automatically

[0222] invite endpoints to conferences automatically

[0223] set Continuous Presence Layout positions

[0224] provide cascading capabilities

[0225] allocate resources with the proper service hunting

[0226] generate call prefixes

[0227] At conference start time, the automated schedule and controlsystem logs on to the MCU. Through the Device Control System (DCS), thesoftware sends special SNMP commands to create a conference shellspecific to the service parameters previously selected by the system forthis conference. These parameters detail information about theconference such as number of participants, speed, type of conference,etc.

[0228] The conference shell can be protected from unwarranted access byrequiring a pass code on the MCU, such as a Service ID and/or ConferenceID. After creating the conference shell, the automated schedule andcontrol system automatically invites all rooms designated as Dial-out tothe conference using special SNMP commands, including the correct zoneprefix order and dial plan numbers. The Dial-out endpoint connectionsare routed to the MCU with the help of the H.323 Gatekeeper. Roomsdesignated as Dial-in must dial the conference using the correct zoneprefix order and pass code to gain access.

[0229] Persons of ordinary skill in the art will recognize that manymodifications may be made to the present invention without departingfrom its spirit and scope. The embodiments described herein are meant tobe illustrative only and should not be taken as limiting the invention,which is defined by the following claims.

1. A method for connecting a videoconference through a telecommunicationsystem including multiple telecommunication devices and endpointstations operatively connected via route segments comprising the stepsof: providing a database in a telecommunication host facility includinga network model of the telecommunication system; entering endpointstation indicia, telecommunications device operating indicia and routesegment indicia at the host facility database; establishing an adjacencymatrix having matrix nodes based on endpoint stations andtelecommunication devices; assigning efficiency value to each routesegment in the matrix; calculating the most efficient routing for thevideoconference by employing a Floyd-type graph algorithm; nominating aprimary device for interconnecting the telecommunication devices andendpoint stations; verifying operability of the network model of thetelecommunication system; recording verified routing in the hostfacility database; and controlling devices and endpoints automatically.2. A method for connecting a videoconference according to claim 1,wherein the algorithm finds the shortest path between nodes by aprocedure from the start device to each of the other devices.Computation is made for each route to determine if it is part of a newleast costly path. for (MiddleNode = 0; MiddleNode < TableSize;MiddleNode++)  for (StartNode = 0; StartNode < TableSize; StartNode++)  if (Table[StartNode][MiddleNode].LowestCost > 0)    for (EndNode = 0;EndNode < TableSize; EndNode++)     if (StartNode != EndNode &&Table[MiddleNode]     [EndNode].LowestCost > 0)      { NewCost =Table[StartNode][MiddleNode].LowestCost +      Table[MiddleNode][EndNode].LowestCost;       if(Table[StartNode][EndNode].LowestCost ==0 ||        Table[StartNode][EndNode].LowestCost > NewCost)         {         Table[StartNode][EndNode].LowestCost = NewCost;         Table[StartNode][EndNode].From =         Table[MiddleNode][EndNode].From;         }      }


3. A method for connecting a videoconference through a telecommunicationsystem according to claim 1 wherein the telecommunication networkincludes an Internet network, and wherein at least a portion of theroute segments are assigned differing cost efficiency values.
 4. Amethod for connecting a videoconference through a telecommunicationsystem comprising videoconferencing rooms and telecommunication devicesoperatively connected through route segments, comprising the steps of:representing the telecommunication devices and videoconferencing roomsas network nodes in a computer-stored adjacency matrix; and applying acomputer graph algorithm for determining least cost routing, whereby theleast cost routing is allocated in advance for an entirevideoconferencing event.
 5. In a videoconferencing telecommunicationsystem comprising telecommunication devices and videoconferencingendpoints operatively connected through at least one network, saidsystem comprising conference scheduling and management means associatedwith a database in a telecommunication host facility including a networkmodel of the telecommunication system; means for entering endpointindicia and telecommunications device indicia at the host facilitydatabase; the improvement of which comprises a computer-implementedprogram associated with the system and representing saidtelecommunication devices and videoconferencing rooms as network nodesin a computer-stored allocation matrix, said program calculating a graphalgorithm for finding the most efficient path between nodes with theprogram using this computational method: for (MiddleNode = 0; MiddleNode< TableSize; MiddleNode++)  for (StartNode = 0; StartNode < TableSize;StartNode++)   if (Table[StartNode][MiddleNode].LowestCost > 0)    for(EndNode = 0; EndNode < TableSize; EndNode++)     if (StartNode !=EndNode && Table[MiddleNode]     [EndNode].LowestCost > 0)      {NewCost = Table[StartNode][MiddleNode].LowestCost +      Table[MiddleNode][EndNode].LowestCost;       if(Table[StartNode][EndNode].LowestCost ==0 ||        Table[StartNode][EndNode].LowestCost > NewCost)         {         Table[StartNode][EndNode].LowestCost = NewCost;         Table[StartNode][EndNode].From =         Table[MiddleNode][EndNode].From;         }      }


6. In a videoconferencing telecommunication system according to claim 5said program further nominates a primary device, verifies operability ofthe network model of the telecommunication system, and records verifiedrouting in the host facility database.